home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-09-12 | 6.2 KB | 149 lines | [TEXT/MPS ] |
- { dcmd.p
- This is the dcmd interface.
- Copyright © 1988 Apple Computer, Inc. All rights reserved.
- }
-
- UNIT dcmd;
-
- INTERFACE
-
- CONST { Possible requests from the debugger to the command }
- dcmdInit = 0;
- dcmdDoIt = 1;
- dcmdHelp = 2;
-
- D0Register = 0;
- D1Register = 1;
- D2Register = 2;
- D3Register = 3;
- D4Register = 4;
- D5Register = 5;
- D6Register = 6;
- D7Register = 7;
-
- A0Register = 8;
- A1Register = 9;
- A2Register = 10;
- A3Register = 11;
- A4Register = 12;
- A5Register = 13;
- A6Register = 14;
- A7Register = 15;
-
- PCRegister = 16;
- SRRegister = 17; { SR is only 16 bits and is stored in the high word }
-
- freeBlock = 0;
- nonrelocatableBlock = 1;
- relocatableBlock = 2;
-
- TYPE RegFilePtr = ^RegFile;
- RegFile = ARRAY [0..17] OF LONGINT;
-
- dcmdBlockPtr = ^dcmdBlock;
- dcmdBlock = RECORD
- registerFile: RegFilePtr;
- request: INTEGER;
- aborted: BOOLEAN; { Set to true if the user types a key while scrolling }
- END;
-
- {EJECT}
-
- { Pacsal declarations for debugger call back routines that can be used by a dcmd }
-
- { Draw the text in the Pascal string as one or more lines separated by CR's.
- Each line causes the MacsBug display to be scrolled and the new line to be
- drawn at the bottom. If the user types a key while scrolling then the aborted
- flag is set telling the command to terminate immediately. }
- PROCEDURE dcmdDrawLine (str: Str255);
-
- { Draw the text in the Pascal string as a continuation of the current line.
- CR's are not given special treatment. }
- PROCEDURE dcmdDrawString (str: Str255);
-
- { Draw a given number of characters starting from the given pointer as a
- continuation of the current line. CR's are not given special treatment. }
- PROCEDURE dcmdDrawText(text: StringPtr; length: INTEGER);
-
- { Scrolls the MacsBug display up one line leaving a blank line at the bottom. }
- PROCEDURE dcmdScroll;
-
- { Display the Pascal string in the command line area and wait for a key to be pressed.
- Return TRUE if the user typed Return. All other keys return FALSE. MacsBug saves this
- key and adds it to the command line once the current command completes. Typing any
- key other than Return sets the aborted flag and tells the command to terminate immediately. }
- FUNCTION dcmdDrawPrompt (str: Str255) : BOOLEAN;
-
- { Get the current command line position }
- FUNCTION dcmdGetPosition : INTEGER;
-
- { Set the current command line position. This should only be set to a value returned
- by dcmdGetPosition. }
- PROCEDURE dcmdSetPosition (pos: INTEGER);
-
- { Return the next character on the command line or CR if the entire line has been scanned }
- FUNCTION dcmdGetNextChar : CHAR;
-
- { Return the next character on the command line or CR if the entire line has been scanned.
- However, the current command line position is not changed. }
- FUNCTION dcmdPeekAtNextChar : CHAR;
-
- { Copy all characters from the command line to the parameter string until a delimiter
- is found or the end of the command line is reached. A delimiter is either a space,
- a comma or a CR. Both single and double quoted strings are allowed on the command
- line. However, the leading and trailing quotes must be of the same type. The parameter
- string is returned without the quotes. This function returns the delimiter }
- FUNCTION dcmdGetNextParameter (VAR str: Str255) : CHAR;
-
- { Parse the command line for the next expression. All expressions are evaluated to 32 bits.
- This function returns the delimiter after the expression. The possible delimiters are
- space, comma and CR. Space is not treated as a delimiter in the middle of expressions.
- For instance, '1 + 2' will return a value of 3 and the delimiter will be the char following
- the 2. The return parameter 'ok' tells if the expression was parsed successfully. }
- FUNCTION dcmdGetNextExpression (VAR value: LONGINT; VAR ok: BOOLEAN) : CHAR;
-
- { Copy the break message MacsBug displayed the last time it was entered into str.
- This may contain multiple lines separated by CR's. }
- PROCEDURE dcmdGetBreakMessage (VAR str: Str255);
-
- { Return a symbolic representation for address in str. If no symbol can be found
- then an empty string is returned. The format of the symbol returned is Name+0000.
- With the new compilers, the name is no longer restricted to 8 characters. }
- PROCEDURE dcmdGetNameAndOffset (address: LONGINT; VAR str: Str255);
-
- { Return the trap name for the trap number. If no symbol can be found
- then an empty string is returned. }
- PROCEDURE dcmdGetTrapName (trapNumber: INTEGER; VAR trapName: Str255);
-
- { Return a pointer the macro name for the given value. If no macro can be found
- then a nil is returned. }
- FUNCTION dcmdGetMacroName(value: LONGINT): StringPtr;
-
- { When a debugger command is called, the debugger's world (low memory) is installed.
- Commands that want to reference the user's world can swap back and forth between the
- two worlds by making this call. This procedure does nothing in MacsBug. It is included
- to support other debuggers that might want to take advantage of it. }
- PROCEDURE dcmdSwapWorlds;
-
- { Toggle between the user and debugger displays.
- The first call restores the user's actual screen.
- The second call restores the debugger's screen. }
- PROCEDURE dcmdSwapScreens;
-
- { Walk thru the blocks in the current heap, calling DoThis for each block. DoThis should
- be a procedure of the form:
-
- PROCEDURE DoThis (blockAddress, blockLength, addrOfMasterPtr: LONGINT;
- blockType: INTEGER;
- locked, purgeable, resource: BOOLEAN);
-
- The blockAddress and blockLength pertain to the data in the heap block, not including
- the block header. The addrOfMasterPtr is the master pointer's location in the heap,
- not the value of the master ptr. The blockType is defined by the constants freeBlock,
- nonrelocatableBlock and relocatableBlock. The booleans locked, purgeable and resource
- reflect the state of the block. }
- PROCEDURE dcmdForAllHeapBlocks (DoThis: ProcPtr);
-
- IMPLEMENTATION
-
- END.